using System;
using System.Collections.Generic;
using System.Text;

namespace Deepcode.Flux.Core.Systems.Audit
{
	/// <summary>
	/// Stamps an event with a severity level from debug trace 
	/// to critical errors
	/// </summary>
	public enum EventSeverity
	{
		/// <summary>
		/// A trace level event is debugging information and is generally only used on a
		/// development installation, but turned off in production environments. These messages
		/// are generally only useful to the developer.
		/// </summary>
		Trace = 0,
		/// <summary>
		/// An information event is used to log useful information such as a script 
		/// starting or someone logging into the system. These messages are deemed 
		/// useful to the administrator of the system for tracing and tracking only.
		/// </summary>
		Information,
		/// <summary>
		/// An Important event is activity within the system that an administrator
		/// might need to know about. For example, User X deleted user Y, User X 
		/// deleted the content object titled "ABCDEFG". Audit level events.
		/// </summary>
		Important,
		/// <summary>
		/// A Critical event may need administrative notification or action. For example
		/// a user attempting unauthorised access to a module, or user X installed 
		/// the YZ application etc.
		/// </summary>
		Critical,
		/// <summary>
		/// An error event is a fatal module/task or system error that would 
		/// generally be populated using exception handling in a module, and would
		/// normally be reflective of erroneous data or bugs in a solution.
		/// </summary>
		Error
	}
}
